package com.molichuxing.services.infrastructure.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.framework.dto.TabDto;
import com.molichuxing.services.infrastructure.bean.DealerBean;

/**
 * <p>
 * 经销商基础信息 Mapper 接口
 * </p>
 *
 * @author zph
 * @since 2019-08-12
 */
public interface DealerMapper extends RootMapper<DealerBean> {


    /**
     * 根据条件分页查询count
     *
     * @param params
     * @return
     */
    long getPageCount(@Param("params") Map<String, Object> params);

    /**
     * 根据条件分页查询
     *
     * @param params
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<DealerBean> getPage(@Param("params") Map<String, Object> params, @Param("pageNum") int pageNum,
                             @Param("pageSize") int pageSize);


    /**
     * 根据id修改经销商信息
     *
     * @param bean
     * @return
     */
    int modifyById(DealerBean bean);

    /**
     * 编辑经销商状态
     *
     * @param id
     * @param status
     * @return
     */
    int modifyStatusById(@Param("id") Integer id, @Param("status") Integer status);

    /**
     * 根据状态获取经销商数量
     *
     * @return
     */
    List<TabDto> getDealerCountByStatus();

    /**
     * 通过id集合获取经销商集合
     *
     * @param ids
     * @return
     */
    List<DealerBean> getBatchByIds(@Param("ids") List<Integer> ids);


    /**
     * 通过区域id查询经销商信息
     *
     * @param regionIdList
     * @param dealerName
     * @return
     */
    List<DealerBean> getByRegionId(@Param("regionIdList") List<Integer> regionIdList, @Param("dealerName") String dealerName);

    /**
     * 获取所有经销商信息
     *
     * @return
     */
    List<DealerBean> getAllList(@Param("status") Integer status, @Param("type") Integer type, @Param("dealerId") Integer dealerId);

    /**
     * 根据经销商名称模糊查询
     *
     * @return
     */
    List<DealerBean> getListByName(@Param("dealerName") String dealerName, @Param("status") Integer status, @Param("type") Integer type);

    /**
     * 查询经销商名称数量
     *
     * @param shortName
     * @return
     */
    int getCountByShortName(@Param("shortName") String shortName);

    /**
     * 查询经销商全称数量
     *
     * @param fullName
     * @return
     */
    int getCountByFullName(@Param("fullName") String fullName);

    /**
     * 获取经销商总和
     *
     * @return
     */
    int getCount();

    /**
     * 获取所有经销商所在城市id
     *
     * @return
     */
    List<Integer> getRegionId();

    /**
     * 根据区域id查询
     *
     * @param regionIds 区域id
     * @return
     */
    List<DealerBean> getDealerByRegionId(@Param("regionIds") List<Integer> regionIds);

    List<DealerBean> getDealerListByParam(@Param("params") Map<String, Object> params);

    Integer getOpenDealerCount();
}
